package com.aos.erp.manager.model.student;

import com.aos.erp.manager.enums.student.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 学员信息表
 * </p>
 *
 * @author chb
 * @since 2018-11-01
 */
@Getter
@Setter
@TableName("t_student")
public class Student implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.INPUT)
    private Long id;

    /**
     * 证件类型
     */
    @TableField("sf_type")
    private int sfType;
    /**
     * 姓名
     */
    @TableField("name")
    private String name;

    /**
     * 出生日期
     */
    @TableField("birthday")
    private String birthday;

    /**
     * 证件号码
     */
    @TableField("certificates_number")
    private String certificatesNumber;

    /**
     * 国籍
     */
    @TableField("country")
    private String country;

    /**
     * 身份证有效期 开始时间
     */
    @TableField("effected_Date")
    private String effectedDate;

    /**
     * 身份证有效期 结束时间
     */
    @TableField("expired_Date")
    private String expiredDate;

    /**
     * 性别   男:1;女:2;  未知：3
     */
    @TableField("sex")
    private String sex;

    /**
     * 学习类别（初次申领：0，增驾：1）
     */
    @TableField("study_type")
    private DrivingType studyType = DrivingType.first;

    /**
     * 手机号
     */
    @TableField("phone")
    private String phone;

    /**
     * 准驾车型(申请车型ID)(来自字典表)
     */
    @TableField("car_id")
    private Long carId;

    /**
     * 暂住证编号
     */
    @TableField("stay_addree_number")
    private String stayAddreeNumber;

    /**
     * 邮箱
     */
    @TableField("email")
    private String email;



    /**
     * 住所详细地址
     */
    @TableField("address_detailed")
    private String addressDetailed;

    /**
     * 报名来源
     */
    @TableField("registered_source")
    private String registeredSource;


    /**
     * 登记住所详细地址
     */
    @TableField("registered_residence")
    private String registeredResidence;

    /**
     * 学员来源(1：本地   2：外地）
     */
    @TableField("student_source")
    private Residence studentSource = Residence.local;

    /**
     * 学费
     */
    @TableField("registered_tuition")
    private BigDecimal registeredTuition;

    /**
     * 学员编号UUID
     */
    @TableField("student_number")
    private String studentNumber;

    /**
     * 报名日期
     */
    @TableField("registered_time")
    private Date registeredTime;

    /**
     * 驾校ID
     */
    @TableField("drivers_id")
    private Long driversId;

    /**
     * 推荐码
     */
    @TableField("referral_code")
    private String referralCode;

    /**
     * 备注
     */
    @TableField("reason")
    private String reason;







    /**
     * 创建时间
     */
    @TableField("created")
    private Date created;

    /**
     * 最后修改时间
     */
    @TableField("updated")
    private Date updated;

    /**
     * 操作人ID
     */
    @TableField("operator_id")
    private Long operatorId;

    /**
     * 传输状态
     */
    @TableField("transfer_status")
    private Integer transferStatus;

    /**
     * 面签状态（0：审核不用过；1：审核通过）
     */
    @TableField("interview_status")
    private TnterviewStatus interviewStatus = TnterviewStatus.normal;

    /**
     * 学员状态
     * 0：新报名（已报名并未有科目一考试记录的）
     * 1：科目一在培中
     * 11:科目一预约考试中
     * 2：科目二在培中
     * 21：科目二预约考试中
     * 3：科目三在培中
     * 31：科目三预约考试中
     * 4：科目四在培中
     * 41：科目四约考试中
     * 注：（科目一、二、三、四过程中都通称  在培）
     * 5：已结业（科目四考试通过的学员）
     */
    @TableField("status")
    private StudentStatus status = StudentStatus.newenroll;

    /**
     * 互联网状态
     * 0:未提交（驾校录入学员资料未提交至车管所）；
     *
     * 1006:待提交（分校提交学员资料至总校，但未提交至车管所）；
     * 112:已保存、总校已上传（总校已向车管所提交学员资料）；
     * 2:上传成功（总校提交资料成功上传至车管所）；
     * 3:上传失败（总校提交资料上传至车管所失败）
     */

    @TableField("net_status")
    private IntegerStatus netStatus = IntegerStatus.onsubmit;
    /**
     * 内网业务状态
     * 4:办结（车管所审核学员资料成功，办结）；
     * 5:退办（车管所审核学员中资料失败，并退回）；
     * 6约考审核成功；
     * 7约考审核失败；
     * 8复核成功；
     * 9复核失败；
     * 10制证成功；
     * 11制证失败；
     * 12归档成功；
     * 13归档失败
     */
    @TableField("inner_status")
    private InnerStatus innerStatus = InnerStatus.normal;

    /**
     * 是否绑定微信号  （0：否  1：是）
     */
    @TableField("is_binding_wechat")
    private BindingWechat isBindingWechat = BindingWechat.no;

    /**
     * 微信openid
     */
    @TableField("wechat_openid")
    private String wechatOpenid;

    @TableField("my_state")
    private Integer myState;
    /**
     * 是否删除  （-1：否    1：是）
     */
    @TableField("is_del")
    private IsDel isDel = IsDel.normal;

    //提交时间
    @TableField("submit_time")
    private Date submitTime;

    public String getStudyTypeName() {
        return studyType.getDesc();
    }

    public String getStudentSourceName() {
        return studentSource.getDesc();
    }

    public String getInterviewStatusName() {
        return interviewStatus.getDesc();
    }

    public String getStatusName() {
        return status.getDesc();
    }

    public String getNetStatusName() {
        return netStatus.getDesc();
    }

    public String getInnerStatusName() {
        return innerStatus.getDesc();
    }

    public String getIsBindingWechatName() {
        return isBindingWechat.getDesc();
    }

    public String getIsDelName() {
        return isDel.getDesc();
    }
}
